package com.boot.demo.config.dao;

import java.beans.PropertyVetoException;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.mchange.v2.c3p0.ComboPooledDataSource;

@Configuration //说明是一个配置文件
@MapperScan("com.boot.demo.dao") //扫描mapper映射的dao
public class DataSourceConfiguration{
	//1.定义需要用到的变量
	@Value("${jdbc.driver}")
	private String driverClass;
	@Value("${jdbc.url}")
	private String jdbcUrl;
	@Value("${jdbc.username}")
	private String user;
	@Value("${jdbc.password}")
	private String password;
	
	//2.创建数据库连接池 dataSource 这里用创建对象的方式进行
	@Bean("dataSource")
	public ComboPooledDataSource createDataSource() throws PropertyVetoException {
		//创建dataSource对象
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		//配置数据库连接属性
		dataSource.setDriverClass(driverClass);
		dataSource.setJdbcUrl(jdbcUrl);
		dataSource.setUser(user);
		dataSource.setPassword(password);
		
		//配置c3p0的私有属性
		dataSource.setMaxPoolSize(30);
		dataSource.setMinPoolSize(10);
		dataSource.setInitialPoolSize(10);
		//关闭连接不提交commit
		dataSource.setAutoCommitOnClose(false);
		//设置连接超时时间
		dataSource.setCheckoutTimeout(20000);
		//设置重连次数
		dataSource.setAcquireRetryAttempts(2);
		
		return dataSource;
	}
}
































//@Configuration  //说明是配置文件
//@MapperScan("com.boot.demo.dao")   //扫描dao接口
//public class DataSourceConfiguration {
//	//创建数据库属性用到的变量
//	@Value("${jdbc.driver}")
//	private String jdbcDriver;
//	@Value("${jdbc.url}")
//	private String jdbcUrl;
//	@Value("${jdbc.username}")
//	private String jdbcUserName;
//	@Value("${jdbc.password}")
//	private String jdbcPassword;
//	
//	//创建数据库连接池 dataSource
//	@Bean(name="dataSource")
//	public ComboPooledDataSource createDataSource() throws PropertyVetoException {
//		//创建数据库连接池的对象 dataSource
//		ComboPooledDataSource dataSource = new ComboPooledDataSource();
//		//配置连接池的属性
//		dataSource.setDriverClass(jdbcDriver);
//		dataSource.setJdbcUrl(jdbcUrl);
//		dataSource.setUser(jdbcUserName);
//		dataSource.setPassword(jdbcPassword);
//		
//		//配置c3p0的私有属性
//		//最大,最小,初始化连接数
//		dataSource.setMaxPoolSize(30);
//		dataSource.setMinPoolSize(10);
//		dataSource.setInitialPoolSize(10);
//		//配置连接关闭时不提交commit
//		dataSource.setAutoCommitOnClose(false);
//		//配置连接超时时间
//		dataSource.setCheckoutTimeout(20000);
//		//配置重连次数
//		dataSource.setAcquireRetryAttempts(2);
//		
//		return dataSource;
//	}
//}

























